package cn.good.yan.sf.t2;

/**
 * 2.数组 - 初始化 （新增）
 *
 * @author shengren.yan
 * @create 2024-04-15
 */
public class Demo1 {

    private int size = 0;   // 数组的个数
    private int num = 10;   // 数组的容量
    private int[] arr = new int[num];  // 初始化数组

    /**
     * 添加对象
     *
     * @param element 添加的对象
     * @return
     */
    public void add(int element) {
        arr[size] = element;
        size++;
    }

    /**
     * 添加对象 （指定下标的位置 进行创建对象）
     *
     * @param element 添加的对象
     * @param index   下标
     * @return
     */
    public void add(int element, int index) {
        // 例子：
        // int[] arr = new int[]{1,2,3}
        // int[] arr = new int[]{1,[5],2,3}
        // index = 1   新数组从 1+1=2，开始，拷贝个数：3-1=2，拷贝2个（2,3）
        if (index >= 0 && index < size) {
            // 参数1：原数组 ，
            // 参数2：原数组的下标 ，
            // 参数3：新的数据 ，
            // 参数4：要拷贝的位置，
            // 参数5：拷贝的个数
            System.arraycopy(arr, index, arr, index + 1, size - index);
            arr[index] = element;
            size++;
        }
    }

    public static void main(String[] args) {
        // 演示 add 方法
        Demo1 demo1 = new Demo1();
        demo1.add(1);
        demo1.add(2);
        demo1.add(3);
        demo1.add(5, 1);
        System.out.println(demo1);
    }

}
